package com.ycxy.sh.transaction.service;

import com.alibaba.fastjson.JSONObject;
import com.ycxy.sh.transaction.dao.entity.Commodity;
import com.ycxy.sh.transaction.dao.vo.LayuiPageVo;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author hlt
 * @since 2019-12-21
 */
@Transactional
public interface CommodityService {

    /**
     * 修改商品
     * @param commodity
     * @param session
     * @return
     */
    void updateCommodity(Commodity commodity, HttpSession session);

    /**
     *  发布商品
     * @param commodity
     * @param session
     */
    void publishCommodity(Commodity commodity, HttpSession session);

    /**
     * 上传视频和主图
     * @param file
     * @return
     */
    JSONObject uploadVideo(MultipartFile file) throws IOException;

    /**
     * 上传商品其他图
     * @param files
     * @return
     */
    JSONObject uploadImages(MultipartFile[] files);

    /**
     * 查询商品总数
     * @param commname
     */
    int queryCommodityByNameCount(String commname);

    /**
     * 搜索商品
     * @param page
     * @param commname
     * @return
     */
    List<Commodity> searchCommodity(Integer page,String commname);

    /**
     * 首页分类展示商品
     * @param category
     * @return
     */
    List<Commodity> indexCommodity(String category);

    /**
     * 查询最新发布的8条商品
     * @return
     */
    List<Commodity> latestCommodit();

    /**
     * 分页查询产品清单数据
     * @param category
     * @param area
     * @param minmoney
     * @param maxmoney
     * @param session
     * @return
     */
    int productListNumber(String category,String area, BigDecimal minmoney, BigDecimal maxmoney,
                          HttpSession session);


    /**
     * 查询产品清单界面
     * @param category
     * @param page
     * @param area
     * @param minmoney
     * @param maxmoney
     * @param price
     * @param session
     * @return
     */
    List<Commodity> productInventory(String category, Integer page, String area, BigDecimal minmoney,
                                     BigDecimal maxmoney, Integer price, HttpSession session);

    /**
     * 分页展示个人各类商品信息
     * @param commstatus
     * @param limit
     * @param page
     * @param session
     * @return
     */
    LayuiPageVo pageUserCommodity(Integer commstatus, int limit, int page, HttpSession session);

    /**
     * 用户根据商品id修改商品信息
     * @param commid
     * @param commstatus
     * @param session
     */
    void ChangeCommdotityStatus(Long commid,Integer commstatus, HttpSession session);


    /**
     *   查询商品信息
     */
    Commodity LookCommodity(Commodity commodity);

//    /**插入商品*/
//    Integer InsertCommodity(Commodity commodity);
//    /**查询商品详情*/
//    Commodity LookCommodity(Commodity commodity);
//    /**修改商品*/
//    Integer updateCommodity(Commodity commodity);
//    /**修改商品状态*/
//    Integer ChangeCommstatus(Long commid,Integer commstatus);
//    /**通过商品名分页模糊查询*/
//    List<Commodity> queryCommodityByName(Integer page,Integer count,String commname);
//    /**模糊查询商品总数*/
//    Integer queryCommodityByNameCount(String commname);
//    /**分页展示各类状态的商品信息*/
////    List<Commodity> queryAllCommodity(Integer page,Integer count,String userid,Integer commstatus);
////    /**查询商品各类状态的总数*/
////    Integer queryCommodityCount(String userid,Integer commstatus);
//    /**首页分类展示8条商品*/
//    List<Commodity> queryCommodityByCategory(String category);
//    /**产品清单分类分页展示商品*/
//    List<Commodity> queryAllCommodityByCategory(Integer page,Integer count,String area,String school,String category,BigDecimal minmoney,BigDecimal maxmoney);
//    /**查询产品清单分类分页展示商品的总数*/
//    Integer queryAllCommodityByCategoryCount(String area, String school, String category, BigDecimal minmoney, BigDecimal maxmoney);
}
